<?php
/*
===============================================================================
	Contiene todas aquellas funciones con relacion a Alumnos que nesesiten
	manipular registros de la tabla de usuarios en la base de datos.
===============================================================================
 */
class Alumnos_Model extends CI_Model
{
	const TABLA_ALUMNOS = 'alumnos_2013';
	const TABLA_MATE_ALUM = 'mate_alum_lx_np_2013';
	const ALUMNOS_POR_PAGINA = 50;

	/*
	====================
	ObtenerTodos

	Consulta todos los registros de alumnos en la base de datos y los ordena por nombre de alumno
	acendiente.
	Retorna todos los registros.
	====================
	*/
	function ObtenerTodos()
	{
		$this->db->order_by( "alumno" , "asc" );
		$res = $this->db->get(self::TABLA_ALUMNOS , ALUMNOS_POR_PAGINA , $this->uri->segment(3) );
		if ( $res->num_rows() > 0 ) {
			foreach ( $res->result() as $registro ) {
				$todosRegistros[] = $registro;
			}
		}
		return $todosRegistros;
	}

	/*
	====================
	BuscarPorMatricula

	Busca el registro mediante la matricula especificada y retorna todos los campos del registro.
	====================
	*/
	function BuscarPorMatricula($matricula)
	{
		$this->db->where('matricula',$matricula);
		$res = $this->db->get(self::TABLA_ALUMNOS);
		if( $res->num_rows() > 0 ){
			foreach ( $res->result() as $fila ) {
				$registro[] = $fila;
			}
			return $registro;
		}
	}

	/*
	====================
	BuscarPorAlumno

	Busca el/los registros que sean parecidos al nombre del alumno especificado.
	====================
	*/
	function BuscarPorAlumno($alumno)
	{
		$this->db->like('alumno',$alumno,'both');
		$res = $this->db->get(self::TABLA_ALUMNOS);
		if ( $res->num_rows() > 0 ) {
			foreach ($res->result() as $fila) {
				$registros[] = $fila;
			}
			return $registros;
		}
	}

	/*
	====================
	AgregarRegistrosAlumnos

	Inserta las datos del arreglo asociado en la tabla de Alumnos (Ignora repetidos).
	====================
	*/
	function AgregarRegistrosAlumnos($arregloDatos)
	{
		$insert_query = $this->db->insert_string( self::TABLA_ALUMNOS , $arregloDatos );
    	$insert_query = str_replace( 'INSERT INTO' , 'INSERT IGNORE INTO' , $insert_query );
    	$this->db->query($insert_query);
    	return ($this->db->affected_rows() == 1) ? TRUE : FALSE;
	}

	/*
	====================
	ActualizarRegistroAlumno

	Actualiza el nombre del alumno del registro con la matricula especificada.
	====================
	*/
	function ActualizarRegistroAlumno($matricula, $alumno)
	{
		$query = "UPDATE " . self::TABLA_ALUMNOS . " SET alumno = ? WHERE matricula = ?";
		$this->db->query($query,array($alumno,$matricula));
	}

	/*
	====================
	EliminarRegistro

	Elimina el registro donde coincide con la matricula especificada.
	Retorna la cantidad de filas afectadas
	0 - Fallo
	1 - Exito
	====================
	*/
	function EliminarRegistro($matricula)
	{
		$query = "DELETE FROM " . self:: TABLA_ALUMNOS . " WHERE matricula = ?";
		$this->db->query($query,$matricula);
		return $this->db->affected_rows();
	}

	/*
	====================
	ContarRegistros

	Retorna la cantidad total de registros existentes de alumnos.
	====================
	*/
	function ContarRegistros()
	{
		$totalRegistros = $this->db->count_all(self::TABLA_ALUMNOS);
		return $totalRegistros;
	}

	/*
	====================
	AgregarRegistrsoMateAlum

	Inserta las datos del arreglo asociado en la tabla de Mate_Alumnos.
	Deja la columna de id_curso nula.
	====================
	*/
	function AgregarRegistrsoMateAlum($arregloDatos)
	{
		$this->db->insert_batch(self::TABLA_MATE_ALUM , $arregloDatos);
	}

	/*
	====================
	ActualizarIdCursoMateAlum

	Manda llamar proceso almacenado cual "llena"/actualiza el id_curso de la tabla Mate_alum.
	Atencion!: MySql detecta un error al finalizar el proceso almacenado, aunque realmente se
	termine la operacion exitosa.  Esto se debe por un bug de MySql.
	====================
	*/
	function ActualizarIdCursoMateAlum()
	{
		$resultado = $this->db->query('CALL RelacionarMate_Alum();');
		return TRUE;
	}

}
?>